Трансформация Web.config

Редактировал(а) Alexandr Fokin 2021/11/19 20:47

Трансформация web.config отличается от app.config:

Если мы рассмотрим обычное приложение, то при запуске в VisualStudio оно собирается в папаку \<ProjectDir>\bin\<conf> и туда помещается трансформированный конфиг.
Например мы берем исходный конфиг \<ProjectDir>\app.config и накладываем на него app.<conf>.config результирующий файл помещается в \<ProjectDir>\bin\<conf>
\<ProjectDir>\app.config + app.<conf>.config => \<ProjectDir>\bin\<conf>\*.config

В случае же asp.net приложения при запуске проекта в VisualStudio (IIS express) в качестве конфига будет использован файл \web.config. Отсюда следует 2 факта
1) Мы не можем размещать какую либу конфигукрацию в web.config, если планируем проводить трансформацию. (Для основы следует использовать что то вроде web.base.config)
2) Результат транформации должен помещаться не только в папке конечного билда \<ProjectDir>\bin\, но и в папке самого проека \<ProjectDir>\web.config. Иначе при запуске в VisualStudio мы не получим нужную трансформацию.
\<ProjectDir>\web.base.config + web.<conf>.config => \<ProjectDir>\web.config
\<ProjectDir>\web.base.config + web.<conf>.config => \<ProjectDir>\bin\*.config

Плагин SlowCheetah не учитывает данный аспект работы asp.net проекта, поэтому необходимо вручную внести изменения в .csproj файл проекта.
Это же касается и других .config файлов проекта (log4net.config)

<Target Name="BeforeBuild">
   <TransformXml Source="Web.base.config" Destination="Web.config" Transform="Web.$(Configuration).config" />
</Target>

Ссылки:
https://github.com/microsoft/slow-cheetah/issues/55